package com.yonyou.iuap.activiti.demo.test;

import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;

/**
 * @author guoxh alias 灰太狼(wolffy)
 * @Date 2019/7/3 9:16
 * @desc com.yonyou.iuap.activiti.demo.test
 * Task 任务的监听 主要是为了动态赋值
 */
public class MyTaskListener implements TaskListener {
    @Override
    public void notify(DelegateTask delegateTask) {
        /**
         * 任务的执行人可以动态赋值
         * 1.流程变量
         *  可以通过提取流程变量的方式给任务赋值执行人
         * 2.可以操作数据库
         *  方法一: web环境
         *      ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("classpath:spring.xml");
         *      XxxService xxxService = (XxxService)ac.getBean("xxxService");
         *  方法二: 通过jdbc操作数据库
         *
         *  动态赋值 这里是从上一个节点中的task变量的map中获取,只要流程没有结束,所有的变量都是可以获取的
         *  String value = (String)delegateTask.getVariable("aaa");
         *  delegateTask.setAssignee(value);
         */
        System.out.println("任务执行到班主任节点");
        delegateTask.setAssignee("我是班主任");
    }
}
